package com.love.marriage.userInfo.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.love.marriage.oss.vo.FileInfoVo;
import com.love.marriage.userInfo.entity.UserInfo;
import com.love.marriage.userInfo.vo.*;
import com.love.marriage.userRechargeRecordInfo.vo.UserRechargeHierarchyQueryParam;
import com.love.marriage.userRechargeRecordInfo.vo.UserRechargeHierarchyVo;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 用户表 服务类
 * author: mybatisPlus
 * createDate: 2024-10-11 22:04:00
 * description: 我是由代码生成器生成
 * version: 1.0.0
 */
public interface UserInfoService extends IService<UserInfo> {

    Page<UserInfoVo> getPage(Long pageNum, Long pageSize, UserInfoVo userInfoVo);

    Page<UserVo> getUserPage(Long pageNum, Long pageSize, UserSearchInfoVo userInfoVo);

    UserInfoVo queryUserInfo(Long id) throws Exception;

    UserInfoVo queryUserInfoByPhone(String phone) throws Exception;

    UserVo queryUser(Long id) throws Exception;

    UserVo queryNewUser(Long id) throws Exception;

    UserVo queryByLocalImId(Long localImId) throws Exception;

    UserInfoVo addUserInfo(UserInfoVo userInfoVo);

    UserInfoVo updateUserInfo(UserInfoVo userInfoVo);

    Boolean updateUserInfo(String unionId, String openId);

    Boolean deleteUserInfo(String ids);

    FileInfoVo addAvatar(Long userId, MultipartFile file) throws Exception;

    void refreshUserCode(Long userId, String sex);

    UserCountVo queryUserMemberInfo();

    UserCountVo queryUserStatistics();

    List<UserDataUserVo> queryDayUserInfo();

    /**
     * @description: 查询关注公众号的用户信息
     * @author: alex
     * @return: java.util.List<com.love.marriage.userInfo.vo.UserInfoVo>
     */
    List<UserInfoVo> queryNoticeUserInfo();

    List<UserInfoVo> getInvite(UserInfoVo userInfoVo);

    Page<UserReduceInfoVo> queryUserReduceInfo(Long pageNum, Long pageSize, UserInfoVo userInfoVo);

    Page<UserReduceInfoVo> queryUserReduceDetailInfo(Long pageNum, Long pageSize, UserInfoVo userInfoVo);

    List<UserInfoVo> queryUserList(UserInfoVo userInfoVo) throws Exception;

    /**
     * 充值层级统计分页
     */
    Page<UserRechargeHierarchyVo> queryUserRechargeHierarchyPage(Long pageNum, Long pageSize, UserRechargeHierarchyQueryParam param);

    /**
     * 充值层级统计列表
     */
    List<UserRechargeHierarchyVo> queryUserRechargeHierarchyList(UserRechargeHierarchyQueryParam param);

    /**
     * 充值层级统计Excel导出
     */
    void exportUserRechargeHierarchyExcel(UserRechargeHierarchyQueryParam param, HttpServletResponse response);

    InviteCommissionVo inviteCommissionDetail(UserRechargeHierarchyQueryParam param);

    /**
     * 导出用户信息（包含会员、红娘、合伙人信息）
     */
    void exportUserInfo(UserInfoVo userInfoVo, HttpServletResponse response);

    /**
     * 获取用户所有信息（包含会员、红娘、合伙人、实名认证信息）
     */
    Page<UserInfoVo> getUserAllInfo(Long pageNum, Long pageSize, UserAllQueryVo userAllQueryVo);

    /**
     * 导出用户完整信息（包含会员、红娘、合伙人、实名认证、用户资料信息）
     */
    void exportUserAllInfo(UserAllQueryVo userAllQueryVo, HttpServletResponse response);
    
}
